package com.carlinfo.stu_ques.demo.dao.impl;

import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.TreeMap;

import com.carlinfo.stu_ques.common.dao.impl.BaseDaoImpl;
import com.carlinfo.stu_ques.demo.dao.IKingDao;
import com.carlinfo.stu_ques.demo.pojo.King;

import sun.security.krb5.internal.tools.Kinit;

public class KingDaoImpl extends BaseDaoImpl<King> implements IKingDao
{
	/**
	 * 主键,不能重复 如果dao new了两次;id会不会重复
	 */
	// private static int id ;
	/*
	 * 找一个容器;放的是皇上,实现CRUD Map:通过键快速的找到值 键是id(唯一标识),值:POJO;
	 */
	private Map<Integer, King> kingMap = new TreeMap<Integer, King>();

	private File kingFile = new File(this.parentFile, "king.dat");

	/**
	 * id自加,这个id自加,只需要自己使用
	 */
	/*
	 * private void idCount() { id ++ ; }
	 */
	public KingDaoImpl()
	{
		readFile(kingFile);
	}

	@Override
	public int saveOneDao(King king)
	{
		/* 就是为id赋值 */
		// this.idCount();
		king.setId(id);
		/* ID要不重复, */
		// this.kingMap.put(king.getId(), king);
		// return king.getId() ;
		this.tempId = king.getId();

		int resultId = super.saveOneDao(king);

		writeFile(kingFile);
		return resultId;

	}

	@Override
	public void updateOneDao(King king)
	{
		/*
		 * 如何换掉 Map如何更新
		 */
		// this.kingMap.put(king.getId(), king);
		this.tempId = king.getId();

		super.updateOneDao(king);

		writeFile(kingFile);
	}

	@Override
	public void deleteOneDao(King king)
	{
		/* 删除 */
		// this.kingMap.remove(king.getId());
		this.tempId = king.getId();

		super.deleteOneDao(king);

		writeFile(kingFile);
	}

	// @Override
	// public List<King> selectListDao()
	// {
	// List<King> list = new ArrayList<King>();
	// /**
	// * 循环Map,打印Map中的内容 同时将Map中的值对应的List返回
	// */
	// Set<Entry<Integer, King>> entrySet = this.kingMap.entrySet();
	// for (Iterator iterator = entrySet.iterator(); iterator.hasNext();)
	// {
	// /* 为啥此处需要强转呢? */
	// Entry<Integer, King> entry = (Entry<Integer, King>) iterator.next();
	// /* 从entry中取到键和值 */
	// int key = entry.getKey();
	// King king = entry.getValue();
	// // System.out.println(key + "==循环==" + king);
	// /* 将皇上放到List中 */
	// list.add(king);
	// }
	// return list;
	// }
	//
	// @Override
	// public King selectOneDao(Map<String, Object> condMap)
	// {
	// /**
	// * 查询的条件 可以按照id查询;放的时候就是Integer,
	// */
	// /* 通过id取皇上 */
	// if (condMap.get("id") != null)
	// {
	// Integer id = (Integer) condMap.get("id");
	// return this.kingMap.get(id);
	// }
	// return null;
	// }

}
